#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
   Галерея, основанная на picasaweb
"""

import logging
import gdata.geo
import config
#from gdata import media
from gdata.alt import appengine
from gdata.photos import service
from google.appengine.ext import webapp
from engine import settings
from engine import pagegen

# enable info logging by the app
logging.getLogger().setLevel(logging.INFO)

def getGallery(id = '0'):
  """Получить фотоальбом.
  Args:
    id: идентификатор фотоальбома пользователя в picasaweb

  Returns: данные альбома или фотографии
  """
  try:
    gd_client = gdata.photos.service.PhotosService()
    gd_client.email = config.GD_mail
    gd_client.password = config.GD_password
    gd_client.source = config.GD_picasa
    gd_client.debug = settings.DEBUG
    gdata.alt.appengine.run_on_appengine(gd_client)
    gd_client.ProgrammaticLogin()
  
    if id == 'albums':
      albums = gd_client.GetUserFeed(user = config.GD_picasa)
      data = albums.entry
    else:
      photos = gd_client.GetFeed('/data/feed/api/user/%s/albumid/%s?kind=photo' % (config.GD_picasa, str(id)))
      data = photos.entry
  except Exception, error:
    data = { 'error': 'Sorry, dude, service can`t load photoalbums, please, come back later...' }
    logging.error('getGallery: Error = %s; id = %s' % (error, id) )

  return data

class GalleryHandler(webapp.RequestHandler):
  """Класс - обработчик галереи
  """
  def get(self):
    """Получить по методу GET галерею
    Args:
      self: класс-страница
    """

    id = self.request.get('id', default_value = 'albums')      # получаем id альбома
    #embed = self.request.get('embed', default_value = 'no') # получить html код для встраивания в страницу?

    page_template_values = {
      'portal_title': 'Фотогалерея ' + settings.SITETITLE,
      'page_description': 'наши фотоальбомы',
    }

    data = getGallery(id)                   # получаем данные альбома
    if type(data) == dict:                  # если тип == dict значт произошла ошибка и ее положили в entry.error
      action = 'error'
    elif id == 'albums':
      action = 'albums'
    else:
      action = 'photos'

    page_template_values.update(action = action, entrys = data)
    pagegen.generatePage(self, 'gallery', page_template_values)